Projeto: Sistema Bancário em Java
Bem-vindos ao projeto sobre o desenvolvimento de um sistema bancário utilizando a linguagem de programação Java. Nesta apresentação, exploraremos os conceitos fundamentais de programação através de um exemplo prático que simula operações bancárias comuns.
Vamos implementar funcionalidades essenciais como login, consulta de saldo, depósitos, saques, transferências e investimentos, aplicando estruturas de incremento e decremento, condições e organização de código.

by ANICETO ESTEVAM DE OLIVEIRA NETO

Objetivo
Conceitos Fundamentais
Apresentar entrada e saída de dados, estruturas condicionais (if-else), loops (while) e tratamento de exceções (try-catch) em Java.
Aplicação Prática
Desenvolver um sistema bancário simplificado com operações básicas de conta.
Organização de Código
Demonstrar boas práticas de estruturação e organização de código em blocos lógicos.
Introdução ao Problema
Autenticação
Fazer login no sistema com credenciais seguras
Operações Básicas
Consultar saldo, realizar depósitos e saques
Transferências
Transferir dinheiro via Pix para outros usuários
Investimentos
Aplicar dinheiro em poupança ou fundos de renda fixa
Vamos implementar este sistema passo a passo, explicando cada parte do código e sua função no programa completo.
Estrutura Geral do Código

Autenticação
Login e verificação de senha
Menu Principal
Interface de navegação do sistema
Operações Bancárias
Implementação das funcionalidades
Encerramento
Finalização segura do programa
O código está organizado em blocos lógicos que facilitam a manutenção e compreensão. Cada bloco tem uma responsabilidade específica dentro do sistema, seguindo boas práticas de programação.
Bloco 1: Login e Senha
Definição de Credenciais
Armazenamento das credenciais válidas (login_verificado e senha_verificado) para comparação posterior.
Entrada de Dados
Solicitação ao usuário para inserir login e senha através do Scanner (dados_clientes).
Verificação
Uso do método .equals() para comparar strings corretamente, em vez do operador == que compara referências.
A verificação de login é fundamental para a segurança do sistema. Se as credenciais estiverem incorretas, o programa exibe uma mensagem de erro e encerra a execução com o comando return.
Pergunta: Por que precisei usar .equals() em vez de == para comparar strings?
Bloco 2: Menu Principal

Exibição do Menu
Apresentação das opções disponíveis

Seleção de Opção
Captura da escolha do usuário

Validação
Verificação se a opção é válida

Processamento
Execução da funcionalidade escolhida
O menu principal é exibido dentro de um loop while, que continua enquanto a variável rodar_codigo for true. Isso permite que o usuário realize múltiplas operações sem precisar reiniciar o programa.
A validação da opção escolhida garante que apenas valores entre 1 e 6 sejam aceitos. Caso contrário, uma mensagem de erro é exibida e o loop continua com o comando "continue".
Pergunta: O que acontece se o usuário digitar algo que não seja um número?
Bloco 3: Opções do Menu - Mostrar Saldo

Seleção da Opção
Usuário escolhe a opção 1
Verificação
Sistema confirma a escolha
Exibição do Saldo
Apresentação formatada do valor
Quando o usuário escolhe a opção 1, o sistema exibe o saldo atual formatado com duas casas decimais utilizando o método System.out.printf(). A formatação %.2f garante que o valor seja apresentado no formato monetário adequado.
Pergunta: Por que usei System.out.printf() em vez de System.out.println() para exibir o saldo?
Bloco 3: Opções do Menu - Depósito
Entrada do Valor
Usuário informa o valor a ser depositado
Tratamento de Exceções
Sistema captura erros de entrada com try-catch
Validação do Valor
Verificação se o valor é maior que zero
Atualização do Saldo
Adição do valor ao saldo atual e confirmação
O sistema solicita ao usuário que informe o valor do depósito e utiliza um bloco try-catch para capturar possíveis erros de entrada, como a digitação de letras ou símbolos. Após validar que o valor é positivo, o sistema adiciona o valor ao saldo e exibe uma mensagem de confirmação.
Pergunta: Por que precisei usar try-catch aqui? O que aconteceria sem ele?
Bloco 3: Opções do Menu - Saque
1
Solicitação do Valor
O sistema pede ao usuário que informe quanto deseja sacar
2
Validação
Verificação se o valor é positivo e se há saldo suficiente
3
Processamento
Subtração do valor do saldo atual e confirmação da operação
A operação de saque segue um fluxo similar ao depósito, mas com uma validação adicional: além de verificar se o valor é positivo, o sistema também verifica se há saldo suficiente para realizar a operação. Se alguma dessas condições não for atendida, uma mensagem de erro é exibida.
Pergunta: O que acontece se o usuário tentar sacar mais do que o saldo disponível?
Bloco 4: Encerrar o Programa
Seleção da Opção de Saída
O usuário escolhe a opção 6 para encerrar o programa
Confirmação de Encerramento
O sistema exibe uma mensagem informando que o programa será encerrado
Finalização do Loop
A variável rodar_codigo é alterada para false, encerrando o loop principal
Quando o usuário escolhe a opção 6, o sistema exibe uma mensagem de encerramento e altera o valor da variável rodar_codigo para false. Isso faz com que o loop while seja encerrado na próxima iteração, finalizando o programa de forma segura.
Pergunta: Por que não usei break aqui em vez de alterar rodar_codigo?
public class Main {
public static void main (String[] args){
System.out.println ("Obrigado pela atenção! ");
}
}
Made with Gamma